<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Skeleton (computer programming)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Skeleton_(computer_programming)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Skeleton_computer_programming rootpage-Skeleton_computer_programming skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Skeleton (computer programming)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">For the use in distributed object communication, see <a href="Distributed_object_communication#Skeleton" title="Distributed object communication">Distributed object communication § Skeleton</a>.</div>
<div role="note" class="hatnote navigation-not-searchable">"Dummy code" redirects here. For dummy coding, see <a href="Categorical_variable" title="Categorical variable">Categorical variable</a>.</div>
<p>
<b>Skeleton programming</b> is a style of <a href="Computer_programming" title="Computer programming">computer programming</a> based on simple high-level program structures and so called <b>dummy code</b>. Program skeletons resemble <a href="Pseudocode" title="Pseudocode">pseudocode</a>, but allow <a href="Parsing" title="Parsing">parsing</a>, <a href="Compiler" title="Compiler">compilation</a> and testing of the code. Dummy code is inserted in a program skeleton to simulate processing and avoid <a href="Compiler" title="Compiler">compilation</a> error messages. It may involve empty <a href="Subroutine" class="mw-redirect" title="Subroutine">function</a> declarations, or functions that return a correct result only for a simple test case where the expected response of the code is known.
</p><p>Skeleton programming facilitates a <a href="Top-down_and_bottom-up_design" class="mw-redirect" title="Top-down and bottom-up design">top-down</a> design approach, where a partially functional system with complete high-level structures is designed and coded, and this system is then progressively expanded to fulfill the requirements of the project. Program skeletons are also sometimes used for high-level descriptions of <a href="Algorithm" title="Algorithm">algorithms</a>. A program skeleton may also be utilized as a template that reflects syntax and structures commonly used in a wide class of problems.
</p><p>Skeleton programs are utilized in the <a href="Template_method_design_pattern" class="mw-redirect" title="Template method design pattern">template method design pattern</a> used in <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>. In <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>, dummy code corresponds to an <a href="Abstract_method" class="mw-redirect" title="Abstract method">abstract method</a>, a <a href="Method_stub" title="Method stub">method stub</a> or a <a href="Mock_object" title="Mock object">mock object</a>. In the <a href="Java_remote_method_invocation" title="Java remote method invocation">Java remote method invocation</a> (Java RMI) nomenclature, a <a href="Stub_(computer_science)" class="mw-redirect" title="Stub (computer science)">stub</a> communicates on the client-side with a skeleton on the <a href="Server-side" class="mw-redirect" title="Server-side">server-side</a>.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>A <b>class skeleton</b> is an outline of a <a href="Class_(computer_science)" class="mw-redirect" title="Class (computer science)">class</a> that is used in <a href="Software_engineering" title="Software engineering">software engineering</a>. It contains a description of the class's roles, and describes the purposes of the <a href="Variable_(programming)" class="mw-redirect" title="Variable (programming)">variables</a> and <a href="Method_(computer_science)" class="mw-redirect" title="Method (computer science)">methods</a>, but does not implement them. The class is later <a href="Implementation" title="Implementation">implemented</a> from the skeleton. The skeleton can also be known as either an <a href="Interface_(computing)" title="Interface (computing)">interface</a> or an <a href="Abstract_class" class="mw-redirect" title="Abstract class">abstract class</a>, with languages that follow a polymorphic paradigm.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Background">Background</h2></div>
<p>Modern <a href="Software" title="Software">software</a><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> is often complicated due to a host of reasons. This can mean that not just a single <a href="Programmer" title="Programmer">programmer</a> can develop it, or that other modules or parts have to be separately imported. The programs can also be too complex on their own, some with multiple methods accessing a single <a href="Variable_(computer_science)" title="Variable (computer science)">variable</a> at the same time or even generating <a href="Pixel" title="Pixel">pixels</a> for displays. Skeleton code is used to assist programmers to develop their code with the fewest errors during the time of <a href="Compilation_(computing)" class="mw-redirect" title="Compilation (computing)">compilation</a>.
</p><p>Skeleton code is most commonly found in <a href="Parallel_computing" title="Parallel computing">parallel programming</a>, but is also applied in other situations, like <a href="Documentation" title="Documentation">documentation</a> in <a href="Programming_language" title="Programming language">programming languages</a>. This helps to simplify the core functionality of a potentially confusing method. It can also be used to allow for a small function within a larger program to operate without full functionality temporarily.
This method of programming is easier than writing a complete function, as these skeleton functions do not have to include main functionalities and can instead be hardcoded to use during development. They usually involve syntactically correct code to introduce the method, as well as comments to indicate the operation of the program. This is not always necessary to call a piece of text skeleton code.
</p>
<div class="mw-heading mw-heading2"><h2 id="Relation_to_pseudocode">Relation to pseudocode</h2></div>
<p><a href="Pseudocode" title="Pseudocode">Pseudocode</a> is most commonly found when <a href="Plan" title="Plan">developing</a> the structure of a new piece of <a href="Software" title="Software">software</a>. It is a plain English portrayal of a particular function within a larger system, or can even be a representation of a whole program. Pseudocode is similar to skeleton programming, however deviates in the fact that pseudocode is primarily an informal method of programming.<sup id="cite_ref-:0_3-0" class="reference"><a href="#cite_note-:0-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Dummy code is also very similar to this, where code is used simply as a placeholder, or to signify the intended existence of a method in a class or interface.
</p><p><a href="Programmer" title="Programmer">Computer programmers</a> are extremely dependent on pseudocode, so much so that it has a measurable impact on their <a href="Psyche_(psychology)" title="Psyche (psychology)">psyche</a>.<sup id="cite_ref-:0_3-1" class="reference"><a href="#cite_note-:0-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> A typical programmer is so conditioned with the idea of writing simplified code in some manner, be it by writing pseudocode or skeleton code, or even just by drawing a diagram, that this has a measurable impact on how well they can write their final implementation. This has been found over a number of applications, with different programmers working in different languages and varied <a href="Programming_paradigm" title="Programming paradigm">programming paradigms</a>.
</p><p>This method of program design is also most often done on pen and paper, further moving the text from what is actually to be implemented. Skeleton programming mimics this, but differs in the way that it is commonly written in an <a href="Integrated_development_environment" title="Integrated development environment">integrated development environment</a>, or <a href="Text_editor" title="Text editor">text editors</a>. This assists the further development of the program after the initial <a href="Design" title="Design">design</a> stage. Skeleton programs also allow for simplistic functions to operate, if run.
</p>
<div class="mw-heading mw-heading2"><h2 id="Implementation">Implementation</h2></div>
<p>Skeleton programming can be implemented in a range of different programming applications.
</p>
<div class="mw-heading mw-heading3"><h3 id="Programming_language_documentation">Programming language documentation</h3></div>
<p>Most, if not all programming languages have skeleton code used to assist in the definition of all built-in functions and <a href="Method_(software_engineering)" class="mw-redirect" title="Method (software engineering)">methods</a>. This provides a simple means for newer programmers to understand the syntax and intended implementation of the written methods.
</p><p><a href="Java_(programming_language)" title="Java (programming language)">Java</a>, an <a href="Object-oriented_programming" title="Object-oriented programming">object oriented language</a>, focuses heavily on a structured documentation page with completely separated methods for each object part of Java's packages.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Object oriented languages focus on a hierarchy based structure to their implementations, rather than a simple top-down approach found in other languages. ‘Objects’ store data and variables in them, allowing for a typically more efficient program to be written. These objects have individual functions that can access internal variables, known as methods.
</p><p>Each method is defined in the same format, with the name of the method as well as the syntax to be used in an <a href="Integrated_development_environment" title="Integrated development environment">integrated development environment</a> clearly visible at the top of a block. With Java's focus on <a href="Scope_(computer_science)" title="Scope (computer science)">scope</a>, <a href="Data_type" title="Data type">data types</a> and <a href="Inheritance_(object-oriented_programming)" title="Inheritance (object-oriented programming)">inheritance</a>, this syntax is extremely useful for new, if not all programmers. This is followed by an in-depth explanation of the operation of the method, with errors below.
</p><p><a href="Python_(programming_language)" title="Python (programming language)">Python</a> has a similar approach to document its in-built methods, however mimics the language's lack of fixation on scope and data types.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> This documentation has the syntax of each method, along with a short description and an example of the typical use of the method or function. The skeleton code provided in the example gives programmers a good understanding of the function at a quick glance.
</p>
<div class="mw-heading mw-heading3"><h3 id="Class_definition">Class definition</h3></div>
<p><a href="Class_(computer_programming)" title="Class (computer programming)">Classes</a> written by third-party developers, primarily as a part of libraries, also showcase their programming in the form of skeleton code. This helps to inform any that are new to the library as to how the functions and methods operate. <a href="P5.js" class="mw-redirect" title="P5.js">P5.Js</a> uses this format on their documentation page to explain the intended use of certain included functions.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> This is different to the programming language documentation however, using skeleton code to display <a href="Parameter_(computer_programming)" title="Parameter (computer programming)">parameters</a> rather than all possible uses of the method.
</p><p><a href="Natural-language_user_interface" title="Natural-language user interface">Natural Language Interfaces</a> (NLIs) are most typically found in situations where programmers attempt to take an <a href="Input/output" title="Input/output">input</a>, usually <a href="Colloquialism" title="Colloquialism">colloquially</a> termed (without the use of programming language specific <a href="Jargon" title="Jargon">jargon</a>) and use this to create a program or a method. An implementation of this uses a small set of skeleton code to imply the function running in the background.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>Other forms of NLIs use different forms of input, ranging from other users speaking different languages, to gesture based input to produce a very similar result. With programming languages being developed and written primarily in English, people speaking other languages find it hard to develop new software. NLIs have been used in some studies <sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> to assist people in these situations. The study showed classes written in Java through the use of NLIs. This removed the need for learning syntactical rules, however meant that the class was written using a basic set of skeleton code.
</p>
<div class="mw-heading mw-heading3"><h3 id="Polymorphism-based_definitions">Polymorphism-based definitions</h3></div>
<p><a href="Polymorphism_(computer_science)" title="Polymorphism (computer science)">Polymorphism</a> is an ideology that follows with the <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> paradigm, where methods can be overridden or <a href="Overloaded_method" class="mw-redirect" title="Overloaded method">overloaded</a> (methods with the same name in a child class which will take priority over a method written in a parent class). The definition of methods is based on a skeleton framework defined by the <a href="Syntax" title="Syntax">syntax</a> of the language.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p><p>Very similar to class implementation, skeleton code can be used to define the methods that are part of an <a href="Interface_(computing)" title="Interface (computing)">interface</a>. An interface is essentially a <a href="Blueprint" title="Blueprint">blueprint</a> of a class, which allows for strict object oriented languages (such as <a href="Java_(programming_language)" title="Java (programming language)">Java</a>) to use classes from different <a href="Java_package" title="Java package">packages</a> without the need to fully understand the internal functions. Interfaces simply define the methods that have to be present within the class, allowing anyone else to use the methods or implement the class for their personal needs
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="kd">public</span><span class="w"> </span><span class="nf">skeletonExample</span><span class="p">();</span>
</pre></div>
<p>An <a href="Abstract_class" class="mw-redirect" title="Abstract class">abstract class</a> is almost the same as a class implementation, however depending on the language, at least one method is defined as abstract. This implies that any children of this class (any classes that extend or implement) need to have a method defined for this. Abstract classes have a very similar definition style to interfaces, however a keyword ‘abstract’ is typically used to identify the fact that it needs to be implemented in child classes.
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="kd">public</span><span class="w"> </span><span class="kd">abstract</span><span class="w"> </span><span class="nf">skeletonExample</span><span class="p">();</span>
</pre></div>
<p>These examples use the <a href="Java_syntax" title="Java syntax">Java syntax</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Parallel_programming">Parallel programming</h2></div>
<p><a href="Parallel_computing" title="Parallel computing">Parallel programming</a> is the operation of multiple functions simultaneously most commonly used to increase efficiency. These are typically the hardest types of programs to develop, due to their complexity and interconnectedness with the <a href="Computer_hardware" title="Computer hardware">hardware</a> in question as well. Many developers have attempted to write programs with this core functionality,<sup id="cite_ref-:1_10-0" class="reference"><a href="#cite_note-:1-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> however this has been met by varied results.
</p><p><a href="Algorithmic_skeleton" title="Algorithmic skeleton">Algorithmic skeleton</a> frameworks are used in parallel programming to abstractly describe the methods in question for later development. The frameworks are not limited to a single type, and each of these types have different purposes to increase the efficiency of the developer's program. These can be categorised into three main types: <a href="Data_parallelism" title="Data parallelism">data-parallel</a>, <a href="Task_parallelism" title="Task parallelism">task-parallel</a> and resolution.<sup id="cite_ref-:1_10-1" class="reference"><a href="#cite_note-:1-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Data-parallel">Data-parallel</h3></div>
<p>These skeleton algorithms are used to develop programs that work on large data based software, usually identifying the connections between data for later use. Data parallel algorithms include ‘maps’, ‘forks’ and ‘reduces’ or ‘scans’.
</p>
<ul><li>‘Maps’ are the most commonly used data parallel algorithms, and typically involve a single operation completed on a large set of data. To increase efficiency, a number of data sets have this operation applied to them simultaneously, before the data is structured together again at the end.</li>
<li>‘Forks’ are similar to ‘maps’ but they use a different operation for certain data types. This is known as <a href="Data_parallelism" title="Data parallelism">multiple data parallelism</a>.<sup id="cite_ref-:1_10-2" class="reference"><a href="#cite_note-:1-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li>
<li>‘Reduces’ or ‘scans’ are used to apply prefixes to a set of data, before then applying an operation upon the data. These are different to ‘maps’ as they have a set of partial results during the runtime of the method itself.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Task-parallel">Task-parallel</h3></div>
<p>These operations, as their name suggests, work on tasks. Each type of algorithm under this is different due to a change in the behaviour between tasks. Task parallel algorithms include ‘sequentials’, ‘farms’, ‘pipes’, ‘if’, ‘for’ and ‘while’.
</p>
<ul><li>‘Sequential’ closes and terminates a nested set of skeleton algorithms. The methods and programs that are part of the skeletons are included as terminating aspects of the program, before closing.</li>
<li>‘Farms’ are known as a group of tasks, a worker, or as a master or slave of another function. It completes the given tasks by replicating the tasks over multiple threads and running these concurrently. This divides the load for a specific thread, effectively creating a master / slave relationship between the threads.</li>
<li>‘Pipes’ are the more traditional forms of algorithms, where each method or function is run in a sequence. This follows the order in which the programmer has written their code. This is made parallel by computing varied tasks on a set of data, typically input, simultaneously to improve performance and speed. Each simultaneous computation is known as a stage. The pipe algorithm can be nested, where one is within another, each splitting up responsibilities to increase speed and also the number of stages.</li>
<li>‘If’ gives the program a conditional split of tasks, where a set of skeleton code is split into two main sections. A conditional statement is given to the program, therefore giving it a specified algorithm to follow.</li>
<li>‘For’ operates a task a number of times, both specified by the programmer, allowing for a more efficient set of code. The number of times that the code runs is a preset value, indicating that at <a href="Run-time_type_information" title="Run-time type information">runtime</a>, this cannot be changed. It must complete the task the number of times given.</li>
<li>‘While’ is an algorithm very similar to the operation of a ‘for’ algorithm, where a task is completed a number of times. However, in ‘while’ algorithms, the program computes the task a number of times before a conditional statement is met. This means that the ‘while’ algorithm can perform its task a different number of times for each time it is run.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Resolution_skeletons">Resolution skeletons</h3></div>
<p>These skeletons are very different to the typical skeletons found above. ‘Resolution’ algorithms use a combination of methods to solve a specified problem. The algorithm's given problem can be a “family of problems”.<sup id="cite_ref-:1_10-3" class="reference"><a href="#cite_note-:1-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> There are two main types of these skeletons, ‘divide and conquer’ or ‘brand and bound’.
</p>
<ul><li>‘Divide and conquer’ uses a map skeleton as its basis, combining this with a while skeleton to solve the problem. In map algorithms, functions on data are applied simultaneously. In ‘divide and conquer’ the set of data provided has a function applied to it using the map skeleton, however this can be applied recursively using the ‘while’ algorithm. The ‘while’ is only broken when the entire problem is solved.</li>
<li>‘<a href="Branch_and_bound" title="Branch and bound">Branch and bound</a>’ is an algorithm that also uses map algorithms, however instead of applying the ‘while’ algorithm to run the tasks simultaneously, this algorithm splits the tasks into branches. Each branch has a specific purpose, or ‘bound’, where the conditional statement will cause it to stop.</li></ul>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */
.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}
/* end https://en.wikipedia.org/ */
</style>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFFreemanFreemanKathyBert2004" class="citation book cs1">Freeman, Eric; Freeman, Elisabeth; Kathy, Sierra; Bert, Bates (2004). Hendrickson, Mike; Loukides, Mike (eds.). <a rel="nofollow" class="external text" href="http://shop.oreilly.com/product/9780596007126.do"><i>Head First Design Patterns</i></a> <span class="cs1-format">(paperback)</span>. Vol. 1. O'REILLY. p. 440. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-596-00712-6</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">August 28,</span> 2012</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFLowery2019" class="citation web cs1">Lowery, Jeff (November 2, 2019). <a rel="nofollow" class="external text" href="https://levelup.gitconnected.com/why-is-software-development-difficult-81a2a041d35e">"Why is Software Development Difficult?"</a>. <i>Medium</i><span class="reference-accessdate">. Retrieved <span class="nowrap">November 15,</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-:0-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-:0_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:0_3-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFBellamy1994" class="citation journal cs1">Bellamy, Rachel K. E. (June 1, 1994). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://www.tandfonline.com/doi/abs/10.1207/s15327051hci0902_3">"What Does Pseudo-Code Do? A Psychological Analysis of the use of Pseudo-Code by Experienced Programmers"</a></span>. <i>Human–Computer Interaction</i>. <b>9</b> (2): <span class="nowrap">225–</span>246. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1207%2Fs15327051hci0902_3">10.1207/s15327051hci0902_3</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0737-0024">0737-0024</a>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html">"Object (Java Platform SE 8 )"</a>. <i>docs.oracle.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">October 2,</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.python.org/3.0/library/functions.html">"Built-in Functions — Python v3.0.1 documentation"</a>. <i>docs.python.org</i>. February 14, 2009<span class="reference-accessdate">. Retrieved <span class="nowrap">October 3,</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://p5js.org/reference/#/p5/alpha">"reference | p5.js"</a>. <i>p5js.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">November 15,</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite id="CITEREFGranger2020" class="citation web cs1">Granger, Chris (November 18, 2020). <a rel="nofollow" class="external text" href="https://twitter.com/ibdknox/status/1328797793138266113">"A first peek at something new we're working on"</a>. <i>Twitter</i><span class="reference-accessdate">. Retrieved <span class="nowrap">November 19,</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFÖzcan2004" class="citation journal cs1">Özcan, E. (2004). <a rel="nofollow" class="external text" href="https://doi.org/10.5220%2F0002683301260134">"Generating Java Class Skeleton Using a Natural Language Interface"</a>. <i>Proceedings of the 1st International Workshop on Natural Language Understanding and Cognitive Science</i>. <b>1</b>. SciTePress - Science and Technology Publications: <span class="nowrap">126–</span>134. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.5220%2F0002683301260134">10.5220/0002683301260134</a></span>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>972-8865-05-8</bdi>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFBenayaZur2008" class="citation cs2">Benaya, Tamar; Zur, Ela (2008), "Understanding Object Oriented Programming Concepts in an Advanced Programming Course", <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://dx.doi.org/10.1007/978-3-540-69924-8_15"><i>Informatics Education - Supporting Computational Thinking</i></a></span>, Lecture Notes in Computer Science, vol. 5090, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. <span class="nowrap">161–</span>170, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-3-540-69924-8_15">10.1007/978-3-540-69924-8_15</a>, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-3-540-69923-1</bdi><span class="reference-accessdate">, retrieved <span class="nowrap">November 18,</span> 2020</span></cite></span>
</li>
<li id="cite_note-:1-10"><span class="mw-cite-backlink">^ <a href="#cite_ref-:1_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:1_10-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:1_10-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-:1_10-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGonzález-VélezLeyton2010" class="citation journal cs1">González-Vélez, Horacio; Leyton, Mario (November 1, 2010). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://dx.doi.org/10.1002/spe.1026">"A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers"</a></span>. <i>Software: Practice and Experience</i>. <b>40</b> (12): <span class="nowrap">1135–</span>1160. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2Fspe.1026">10.1002/spe.1026</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0038-0644">0038-0644</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:16211075">16211075</a>.</cite></span>
</li>
</ol></div></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-21" href="https://en.wikipedia.org/wiki/?title=Skeleton_(computer_programming)&oldid=1291506639">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>